#!/bin/bash

# 系统监控脚本
set -e

echo "📊 个性化学习平台管理系统监控"
echo "=================================="

# 检查服务状态
echo "🔍 服务状态检查..."
docker-compose -f docker-compose.prod.yml ps

echo ""

# 检查容器资源使用情况
echo "💻 容器资源使用情况..."
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}"

echo ""

# 检查磁盘使用情况
echo "💾 磁盘使用情况..."
df -h | grep -E "(Filesystem|/dev/)"

echo ""

# 检查内存使用情况
echo "🧠 内存使用情况..."
free -h

echo ""

# 检查日志文件大小
echo "📝 日志文件大小..."
if [ -d "logs" ]; then
    du -sh logs/*
else
    echo "logs目录不存在"
fi

echo ""

# 检查备份文件
echo "💾 备份文件..."
if [ -d "backups" ]; then
    ls -lh backups/ | head -10
else
    echo "backups目录不存在"
fi

echo ""

# 健康检查
echo "🏥 系统健康检查..."
if command -v curl &> /dev/null; then
    if curl -f http://localhost:5090/api/health > /dev/null 2>&1; then
        echo "✅ 系统运行正常"
        # 显示详细健康信息
        echo "📋 详细健康信息:"
        curl -s http://localhost:5090/api/health | jq '.' 2>/dev/null || curl -s http://localhost:5090/api/health
    else
        echo "❌ 系统运行异常"
    fi
else
    echo "⚠️ curl命令不可用，无法执行健康检查"
fi

echo ""

# 显示最近的错误日志
echo "🚨 最近的错误日志..."
if [ -d "logs" ]; then
    find logs -name "*.log" -type f -exec grep -l "ERROR\|FATAL" {} \; | head -3 | while read logfile; do
        echo "📁 $logfile:"
        tail -5 "$logfile" | grep -E "(ERROR|FATAL)" || echo "  无错误日志"
        echo ""
    done
else
    echo "logs目录不存在"
fi

echo ""

# 显示系统信息
echo "ℹ️ 系统信息..."
echo "操作系统: $(uname -a)"
echo "当前时间: $(date)"
echo "运行时间: $(uptime)"
echo "Docker版本: $(docker --version)"
echo "Docker Compose版本: $(docker-compose --version)"

echo ""
echo "🎯 监控完成！"
echo "💡 提示:"
echo "   - 查看实时日志: docker-compose -f docker-compose.prod.yml logs -f"
echo "   - 重启服务: docker-compose -f docker-compose.prod.yml restart"
echo "   - 停止服务: docker-compose -f docker-compose.prod.yml down"
echo "   - 备份数据库: ./scripts/backup.sh"
